AUI.add("liferay-menu",(e=>{const t=Liferay.Util,n="role",i="className",o="auto",s="btn-primary",a="lfr-extended",r="open",l=".portlet",c=["tl","bl"],d="click",u="keydown",g="parentNode",f="l",h="r",p="t",_={downleft:["tr","br"],downright:c},v={left:h,right:f},m={left:f,right:h},y={left:f,right:h},M={left:h,right:f},C={down:p,up:"b"},w={down:"b",up:p},A={},b=/\bdirection-(downleft|downright|down|left|right|up)\b/,L=/max-display-items-(\d+)/,T="li",N=function Menu(){const e=this;e._handles=[],Menu._INSTANCE||(Menu._INSTANCE=e)};N.prototype={_closeActiveMenu(){const t=this;if(t._activeMenu){const n=t._handles;e.Array.invoke(n,"detach"),n.length=0;const i=t._overlay;i&&i.hide();const o=t._activeTrigger;if(t._activeMenu=null,t._activeTrigger=null,o.attr({"aria-expanded":!1}),o.hasClass(a))o.removeClass(s);else{o.get(g).removeClass(r);const e=o.ancestor(l);e&&e.removeClass(r)}}},_getAlignPoints:e.cached((e=>{let t=c,n=h,i=f,s=v,a=y;if("rtl"===(Liferay.Language.direction[themeDisplay.getLanguageId()]||"ltr")&&(n=f,i=h,s=m,a=M),-1===e.indexOf(o)){const r=e.match(b),l=r&&r[1]||o;if(l.startsWith("down"))t=_[l]||_.downright;else{const e=s[l]||n,o=C[l]||p,r=a[l]||i;t=[o+e,(w[l]||p)+r]}}return t})),_getMenu(n){const i=this;let s=i._overlay;if(s)s.set("align.node",n);else{const o=e.Component.create({AUGMENTS:[e.WidgetCssClass,e.WidgetPosition,e.WidgetStdMod,e.WidgetModality,e.WidgetPositionAlign,e.WidgetPositionConstrain,e.WidgetStack],CSS_PREFIX:"overlay",EXTENDS:e.Widget,NAME:"overlay"});s=new o({align:{node:n,points:c},constrain:!0,hideClass:!1,modal:t.isPhone()||t.isTablet(),preventOverlap:!0,zIndex:Liferay.zIndex.MENU}).render(),Liferay.once("beforeScreenFlip",(()=>{s.destroy(),i._overlay=null})),i._overlay=s}let a=n.getData("menuListContainer"),r=n.getData("menu"),l=n.getData("menuHeight");const d=r&&A[r.guid()];let u;return d&&d.reset(),r&&a||(a=n.next("ul"),u=a.all(T),r=e.Node.create('
'),a.placeBefore(r),u.last().addClass("last"),r.append(a),n.setData("menuListContainer",a),n.setData("menu",r),i._setARIARoles(n,r,a),n.hasClass("select")&&a.delegate("click",(e=>{const t=e.currentTarget,i=t.one("i"),o=n.one("i");if(i&&o){const e=i.attr("class");o.attr("class",e)}const s=t.one(".lfr-icon-menu-text"),a=n.one(".lfr-icon-menu-text");s&&a&&a.setContent(s.text())}),T)),s.setStdModContent(e.WidgetStdMod.BODY,r),l||(l=i._getMenuHeight(n,r,u||a.all(T)),n.setData("menuHeight",l),l!==o&&a.setStyle("maxHeight",l)),i._getFocusManager(),r},_getMenuHeight(e,t,n){const s=this,a=e.attr(i);let r=o;if(-1===a.indexOf("lfr-menu-expanded")){const t=L.exec(a),i=t&&parseInt(t[1],10);if(i&&n.size()>i){s._getLiveSearch(e,e.getData("menu")),r=0;const t=n.slice(0,i).get("offsetHeight");for(let e=t.length-1;e>=0;e--)r+=t[e]}}return r},_positionActiveMenu(){const e=this,n=e._activeMenu,o=e._activeTrigger;if(n){const c=o.attr(i),d=e._overlay,u=d.get("align"),f=n.one("ul");d.show();const h=f.get("offsetHeight"),p=f.get("offsetWidth");if(u.points=e._getAlignPoints(c),n.addClass("lfr-icon-menu-open"),d.setAttrs({align:u,centered:!1,height:h,modal:t.isPhone()||t.isTablet(),width:p}),!t.isPhone()&&!t.isTablet()){const e=d.bodyNode.focusManager;e&&e.focus(0)}if(c.indexOf(a)>-1)o.addClass(s);else{o.get(g).addClass(r);const e=o.ancestor(l);e&&e.addClass(r)}}},_setARIARoles(e,t){const i=t.all("a").filter(':not([aria-haspopup="dialog"]'),o=t.one(".lfr-menu-list-search-container"),s=t.one("ul");let a="menuitem",r="menu";o&&(a="option",r="listbox"),i.size()>0&&(s.setAttribute(n,r),i.set(n,a)),e.attr({"aria-haspopup":!0}),e.hasClass("input-localized-trigger")||s.setAttribute("aria-labelledby",e.guid())}},N.handleFocus=function(t){const n=e.one(t);n&&(n.delegate("mouseenter",e.rbind(N._targetLink,n,"focus"),T),n.delegate("mouseleave",e.rbind(N._targetLink,n,"blur"),T))};const S=[];N.register=function(e){const t=document.getElementById(e);t&&(N._INSTANCE||new N,S.push(t),N._registerTask())},N._registerTask=e.debounce((()=>{if(S.length){e.all(S).on([d,u],e.bind("_registerMenu",N)),S.length=0}}),100),N._targetLink=function(e,t){const n=e.currentTarget.one("a");n&&n[t]()},Liferay.provide(N,"_getFocusManager",(()=>{const t=N._INSTANCE;let n=t._focusManager;if(!n){const i=t._overlay.bodyNode;i.plug(e.Plugin.NodeFocusManager,{circular:!0,descendants:"li:not(.hide) a,input",focusClass:"focus",keys:{next:"down:40",previous:"down:38"}}),i.on("key",(()=>{const e=t._activeTrigger;e&&(t._closeActiveMenu(),e.focus())}),"down:27,9"),n=i.focusManager,i.delegate("mouseenter",(e=>{n.get("focused")&&n.focus(e.currentTarget.one("a"))}),T),n.after("activeDescendantChange",(e=>{const t=n.get("descendants").item(e.newVal);if(t){const e=i.one("ul");e&&e.setAttribute("aria-activedescendant",t.guid())}})),t._focusManager=n,Liferay.once("beforeScreenFlip",(()=>{t._focusManager=null}))}n.refresh()}),["node-focusmanager"],!0),Liferay.provide(N,"_getLiveSearch",((e,t)=>{const n=t.guid();let i=A[n];if(!i){const e=t.one("ul"),o=[];e.all("li").each((e=>{o.push({name:e.one(".taglib-text-icon").text().trim(),node:e})})),i=new Liferay.MenuFilter({content:e,menu:N._INSTANCE,minQueryLength:0,queryDelay:0,resultFilters:"phraseMatch",resultTextLocator:"name",source:o}),i.get("inputNode").swallowEvent("click"),A[n]=i}}),["liferay-menu-filter"],!0),Liferay.provide(N,"_registerMenu",(t=>{const n=t.key||t.keyCode;if(t.type===u&&n!==e.Event.KeyMap.SPACE)return;const i=N._INSTANCE,o=i._handles,a=t.currentTarget,c=i._activeTrigger;if(c){if(c===a)return void i._closeActiveMenu();{c.removeClass(s),c.get(g).removeClass(r);const e=c.ancestor(l);e&&e.removeClass(r)}}if(!a.hasClass("disabled")){const n=i._getMenu(a);if(i._activeMenu=n,i._activeTrigger=a,a.attr({"aria-expanded":!0}),!o.length){const t=a.getData("menuListContainer");e.Event.defineOutside("touchend"),o.push(e.getWin().on("resize",e.debounce(i._positionActiveMenu,200,i)),e.getDoc().on(d,i._closeActiveMenu,i),t.on("touchendoutside",(e=>{e.preventDefault(),i._closeActiveMenu()}),i),Liferay.on("dropdownShow",(e=>{"LiferayMenu"!==e.src&&i._closeActiveMenu()})));const n=e.DD&&e.DD.DDM;n&&o.push(n.on("ddm:start",i._closeActiveMenu,i))}i._positionActiveMenu(),Liferay.fire("dropdownShow",{src:"LiferayMenu"}),t.halt()}}),["aui-widget-cssclass","event-outside","event-touch","widget","widget-modality","widget-position","widget-position-align","widget-position-constrain","widget-stack","widget-stdmod"]),Liferay.Menu=N}),"",{requires:["array-invoke","aui-debounce","aui-node"]});